package com.nlelpct.manage.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nlelpct.manage.model.dto.SysEmployeeListByPageDto;
import com.nlelpct.manage.model.dto.SysEmployeeWhetherAddDto;
import com.nlelpct.manage.model.entity.SysEmployee;
import com.nlelpct.manage.model.query.InsertAndUpdateEmployeeQuery;
import com.nlelpct.manage.model.query.SysEmployeeListByPageQuery;
import com.nlelpct.manage.model.vo.SysEmployeeListByPageVo;
import com.nlelpct.manage.model.vo.SysEmployeeUpdateVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author 小马
 * @since 2023-07-12
 */
@Mapper
public interface SysEmployeeMapper extends BaseMapper<SysEmployee> {


    /**
     * 分页查询员工列表
     * @param page 分页条件
     * @param listByPageDto 查询条件
     * @param companyId 公司id
     * @return 员工列表
     */
    Page<SysEmployeeListByPageVo> selectAllByPage(@Param("page") Page<SysEmployeeListByPageVo> page,
                                                  @Param("listByPageDto") SysEmployeeListByPageQuery listByPageDto,
                                                  @Param("companyId") String companyId,
                                                  @Param("systemId") String systemId,
                                                  @Param("delFlag") Integer delFlag);

    /**
     * 查询处于启动状态员工人数
     * @param companyId 公司id
     * @return 员工人数
     */
    int countByEmployeeStatusByCompanyId(@Param("companyId") String companyId,
                                         @Param("systemId") String systemId,
                                         @Param("delFlag") Integer delFlag);

    /**
     * 根据手机号和公司id查询员工人数
     * @param sysEmployeeWhetherAddDto 手机号,国际区号
     * @param companyId 公司id
     * @return 员工人数
     */
    int countByPhone(@Param("sEWAD") SysEmployeeWhetherAddDto sysEmployeeWhetherAddDto,
                     @Param("companyId") String companyId, @Param("systemId") String systemId,
                     @Param("delFlag") Integer delFlag);

    /**
     * 根据员工id查询用户基本信息
     * @param employId 员工id
     * @return 用户基本信息
     */
    InsertAndUpdateEmployeeQuery selectByIdAndSystemIdAndCompanyId(@Param("employId") String employId, @Param("delFlag") Integer delFlag);


}
